home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / etc / hotplug.d / default / default.hotplug < prev   
Text File  |  2006-05-01  |  3KB  |  115 lines

  1. #!/bin/sh
  2. #
  3. # This version of /sbin/hotplug should works on most GNU/Linux systems
  4. # using Linux 2.2.18+ or 2.4.* kernels.  On 2.2.*, only USB has such
  5. # hotplugging support; on 2.4.*, so do PCI/Cardbus and network interfaces.
  6. #
  7. # In 2.5, both classes and busses can report hotplug events as part
  8. # of the driver model core functionality.  Plus, /sys/$DEVPATH is
  9. # available for scripting, as well as the $ACTION being reported.
  10. #
  11. # The kernel HOTPLUG configuration option needs to be enabled, and most
  12. # device drivers will be compiled for MODULES (make allmod).
  13. #
  14. #
  15. # HISTORY:
  16. #
  17. # 21-Nov-2002    Optionally log events; 2.5 notes (db)
  18. # 26-Feb-2001    Cleanup (Gioele Barabucci)
  19. # 14-Feb-2001    Better diagnostics: logging, agent list (contributors)
  20. # 04-Jan-2001    First "New" version, which only delegates to
  21. #        specialized hotplug agents.
  22. #
  23. # $Id: default.hotplug,v 1.4 2004/09/20 21:40:27 kroah Exp $
  24. #
  25.  
  26. exec < /dev/null
  27. test -t 1 || exec > /dev/null
  28. test -t 2 || exec 2>&1
  29.  
  30. cd /etc/hotplug
  31. . ./hotplug.functions
  32.  
  33. # DEBUG=yes export DEBUG
  34.  
  35. debug_mesg "arguments ($*) env (`env`)"
  36.  
  37. #
  38. # Only one required argument:  event type type being dispatched.
  39. # Examples:  usb, pci, isapnp, net, ieee1394, printer, disk,
  40. # parport, input, ide, cpu, system, ... with 2.5, lots more.
  41. # Other parameters are passed in the environment, or positionally
  42. # through argv.
  43. if [ $# -lt 1 ] || [ "$1" = "help" ] || [ "$1" = "--help" ]; then
  44.     if [ -t ]; then
  45.     echo "Usage: $0 AgentName [AgentArguments]"
  46.  
  47.     AGENTS=""
  48.     for AGENT in /etc/hotplug/*.agent ; do
  49.         TYPE=`basename $AGENT | sed s/.agent//`
  50.         if [ -x $AGENT ]; then
  51.         AGENTS="$AGENTS $TYPE"
  52.         else
  53.         AGENTS="$AGENTS ($TYPE)"
  54.         fi
  55.     done
  56.     echo "AgentName values on this system: $AGENTS" 
  57.     else
  58.     mesg "illegal usage $*"
  59.     fi
  60.     exit 1
  61. fi
  62.  
  63. #
  64. # Delegate event handling:
  65. #   /sbin/hotplug FOO ..args.. ==> /etc/hotplug/FOO.agent ..args..
  66. #
  67. AGENT=/etc/hotplug/$1.agent
  68. if [ -x $AGENT ]; then
  69.     shift
  70.     if [ "$DEBUG" != "" ]; then
  71.     mesg "invoke $AGENT ($@)"
  72.     fi
  73.     exec $AGENT "$@"
  74.     mesg "couldn't exec $AGENT"
  75.     exit 1
  76. fi
  77.  
  78. debug_mesg "no runnable $AGENT is installed"
  79.  
  80. #
  81. # Optionally log events we don't handle directly.
  82. # Some program or person has asked for $LOG data.
  83. #
  84. LOG=/var/log/hotplug/$1.events
  85. if [ ! -w $LOG ]; then
  86.     # catch-all for unclaimed events
  87.     LOG=/var/log/hotplug/events
  88. fi
  89. if [ -w $LOG ]; then
  90.     # record all basic event data
  91.     HOTPLUG_TYPE=$1
  92.     shift
  93.     HOTPLUG_ARGS="$*"
  94.     export HOTPLUG_ARGS HOTPLUG_TYPE
  95.  
  96.     # use to tempfile to buffer events
  97.     # FIXME buffering acts oddly when logging to pipes,
  98.     # it'd be better not to need a tempfile
  99.     TMP=$(mktemp /var/log/hotplug/e-$HOTPLUG_TYPE-XXXXXXXX)
  100.     if [ $? -ne 0 ]; then
  101.     mesg "couldn't create tempfile for logging"
  102.     exit 1
  103.     fi
  104.  
  105.     debug_mesg "log to $LOG ($HOTPLUG_TYPE $HOTPLUG_ARGS)"
  106.     log_to_stdout > $TMP
  107.     cat $TMP >> $LOG
  108.     rm -f $TMP
  109.  
  110.     exit 0
  111. fi
  112.  
  113. exit 1
  114.